2 CLR 4 REM DATA 32,155,183,138,72,32,155,183,104,170,164,101,24,76,240,255 6 BC=198:IF FRE(1)<>FRE(0) THEN BC=208 7 REM SA=32768 8 REM FOR J=SA TO SA+15:READ X:POKE J,X:NEXT J 10 POKE53280,0:POKE53281,0 12 XR=781:YR=782:PR=783 14 IF BC>200 THEN XR=7:YR=8:PR=5 16 ER$=" " 20 DIMS(11),S$(11),SE$(11),S1(20) 100 GOSUB4000 105 GOSUB 10000 107 GOSUB 21000 108 GOSUB 7500 110 GOSUB3600 120 H=0:V=10:TX$="[196]O YOU NEED A LESSON? " 130 GOSUB3200 135 GOSUB 7600 140 LO=0:GOSUB2100 150 IFA$="Y"ORA$="[217]"THENGOSUB20000:GOTO 160 151 IF A$="N" OR A$="[206]" THEN 160 152 GOTO 120 160 GOSUB5000 165 RU=1 170 GOSUB1000 172 IFOP<>3THEN180 174 GOSUB3600 176 GOSUB500 180 GOSUB3600 190 V=10:TX$="[196]O YOU WANT TO PLAY AGAIN? ([217]/[206]) " 200 GOSUB3000:GOSUB 3200:GOSUB 7600 210 LO=0:GOSUB2100:PRINTA$ 220 IFA$="Y"ORA$="[217]"THENPRINTTAB(23)"[145] ":GOTO 160 221 IF A$="N" OR A$="[206]" THEN 230 222 GOTO 190 230 SYS 8*4096+4 500 V=10:H=0:TX$="[217]OU GOT"+STR$(NP-MI)+" RIGHT OUT OF"+STR$(NP) +" PROBLEMS" 510 GOSUB3200 540 V=12:TX$="FOR"+STR$(INT(((NP-MI)/NP)*100))+"%." 545 GOSUB3200:GOSUB 7600 550 DELAY=5:GOSUB2000 560 RETURN 1000 REM *** CENTRAL ROUTINE *** 1005 HP=0:MI=0 1010 FORI=1TONP 1020 GOSUB19000 1025 GOSUB 7500:GOSUB3600 1030 H=0:V=6:TX$="[198]IND THE "+MD$+":" 1035 GOSUB3200:GOSUB 7600:IF MD<>1 THEN 1065 1040 GOSUB 7000 1050 GOTO 1066 1065 ONOPGOSUB11000,11000,17000 1066 V=24:TX$="  <[210][197][212][213][210][206]> TO [195]ONTINUE, <[198]8> TO [197]XIT [146]" 1067 GOSUB3000:GOSUB3200 1068 LO=0:GOSUB2100 1069 IF A$<>"[140]" AND A$<>CHR$(13) THEN 1068 1070 IFA$="[140]"THEN SA=I:I=NP 1074 NEXTI:IF SA<>0 THENNP=SA 1075 GOSUB7500:RETURN 2000 REM *** TIMER *** 2010 TI$="000000" 2015 GETA$:IFA$<>""THEN2030 2020 IFTI/60HITHEN2115 2130 RETURN 3000 REM *** CENTER TEXT *** 3010 X1=LEN(TX$) 3020 H=(40-X1)/2 3030 RETURN 3100 V=24:TX$="  <[210][197][212][213][210][206]> TO [195]ONTINUE [146]" 3110 GOSUB3000:GOSUB3200:GOSUB 7600 3120 LO=0:GOSUB2100 3130 IFA$<>CHR$(13) THEN 3100 3140 RETURN 3200 IF H<0 THEN H=0 3210 POKE XR,V:POKE YR,H:POKE PR,0:SYS 65520:PRINT TX$;:RETURN 3500 REM *** LINE ACROSS SCREEN *** 3510 PRINT""; 3520 FORQ=1TO20 3530 PRINT"[178][178]"; 3540 NEXT 3550 FORQ=1TO20 3560 PRINT"[177][177]"; 3570 NEXT 3575 PRINT""; 3580 RETURN 3600 REM *** PRINT SCREEN HEADER *** 3610 PRINT"[147]" 3630 TX$="[214][201][211][201][207][206] [211][207][198][212][215][193][210][197] AND" 3640 H=10:V=0:GOSUB 3200 3650 TX$="[213]P[212]IME [205]AGAZINE [208]RESENTS:":H=10:V=1:GOSUB 3200 3660 TX$=T$ 3665 PRINT""; 3670 H=10 3680 V=3:GOSUB3200 3685 PRINT""; 3690 PRINT:GOSUB3500:RETURN 4000 REM *** READ DATA *** 4005 READT$ 4010 FORI=1TO6 4020 READRW$(I) 4030 NEXTI 4040 FORI=1TO3 4050 READOP$(I) 4060 NEXTI 4070 FORI=1TO4 4080 READMU$(I),CO(I) 4090 NEXT:RETURN 4100 REM *** PROGRAM DATA *** 4110 DATA"[214]ISION [212]IMES [201][201]" 4120 DATA"[199]REAT!","[198]ANTASTIC!","[211]UPER!" 4130 DATA"[217]OU'RE REALLY GOING NOW!","[217]ES! [217]ES! [217]ES!","[212]HAT'S GREAT!" 4140 DATA"[211]EE EXAMPLES DONE." 4150 DATA"[196]O PROBLEMS WITH HELP." 4160 DATA"[196]O PROBLEMS YOURSELF." 4170 DATA"UNITS",28,"TENS",30,"HUNDREDS",31,"THOUSANDS",158 5000 REM *** SETUP FOR MATH *** 5001 IFRU=1THEN5037 5010 H=0:V=10:TX$="[215]HAT'S YOUR FIRST NAME " 5020 GOSUB3200 5030 MX=16:GOSUB 11000:NA$=TE$ 5035 IF NA$="" THEN NA$="[195]OMPUTER [215]IZ" 5036 IFLEFT$(NA$,1)<"Z"THENNA$=CHR$(ASC(LEFT$(NA$,1))+128)+RIGHT$(NA$,LEN(NA$)-1) 5037 V=10:H=0:TX$="[215]OULD YOU LIKE TO: " 5038 GOSUB3200 5040 H=7:V=12:FORI=1TO3 5050 TX$=STR$(I)+". "+OP$(I) 5060 GOSUB3200 5070 V=V+2 5080 NEXTI 5090 H=0:TX$="[217]OUR CHOICE? (1-3) " 5100 GOSUB3200 5110 LO=1:HI=3:GOSUB2100:PRINTA$ 5120 OP=A:HI=10 5130 IFOP=1THENHI=5 5140 GOSUB 7500:GOSUB 3600 5150 V=10:H=0:TX$="[200]OW MANY PROBLEMS DO YOU WANT" 5160 GOSUB3200 5170 V=11:TX$="TO DO? (2 -"+STR$(HI)+") [157][157]" 5180 H=5:GOSUB3200:GOSUB 7600 5190 MX=2:GOSUB 11000:NP=VAL(TE$) 5200 IFNP<2 ORNP>HITHEN NP=0:GOTO5170 5210 V=13:TX$="[215]E WILL USE 2 DIGIT AND 4 DIGIT":H=0:GOSUB 3200 5220 V=14:H=5:TX$="NUMBERS, "+NA$+".":GOSUB 3200 5260 N1=4 5310 N2=2 5390 RETURN 7000 REM OPTION 1 - MULTIPLY 7010 V=9:H=38-LEN(SE$(1)):TX$=SE$(1):GOSUB 3200 7020 V=10:H=38-LEN(SE$(2)):TX$=SE$(2):GOSUB 3200 7025 V=11:H=37-LEN(SE$(1)):TX$="[192][192][192][192][192][192][192][192]":IF N1=3 THEN TX$=LEFT$(TX$,8) 7030 GOSUB 3200 : IF OP=3 THEN 9000 7040 VV=0:FOR II=3 TO 1 STEP -2 :V=12+VV:H=0 7043 MU=VAL(MID$(SE$(2),II,1)): JK=1 7045 V=12+VV:H=0:TX$="[205]ULTIPLY"+S$(1)+"BY"+STR$(MU*(10^VV))+".":GOSUB 3200 7046 DELAY=3:GOSUB 2000 7047 FOR JJ=N(1)TO 1 STEP-1 : V=18:H=0:TX$=ER$:GOSUB 3200:V=16:GOSUB 3200 7048 V=20:GOSUB 3200 7049 V=16:H=0:TX$="[205]ULTIPLY THE "+MU$(JK)+"." 7050 GOSUB 3200:IF OP=1 THEN DELAY=1:GOSUB 2000 7054 V=18:H=0:TX$=STR$(MU)+" X"+STR$(D(JJ)):IF CA<>0 THEN TX$=TX$+" +"+CA$ 7055 AN=MU*D(JJ)+CA:CA=INT(AN/10) :CA$=STR$(CA):AN$=STR$(AN) 7056 V=18:H=0:TX$=TX$+" = ":IF OP=1 THEN TX$=TX$+AN$ 7058 GOSUB 3200:IF OP=1 THENGOSUB 2000 7060 VJ=12+VV:HJ=36-(VV*2)-(JK*2):IF CA=0 THEN HJ=HJ+1 7061 IF OP=1 THEN 7080 7065 MX=3:GOSUB 11000:TT=VAL(TE$) 7070 IF TT=AN THEN GOSUB 8000 7080 H=HJ:HH=H:TX$=AN$:V=VJ 7090 GOSUB 3200:DELAY=.3:GOSUB 2000 7091 IF CA=0 THEN 7150 7095 TX$="[195]ARRY THE"+CA$+".":V=20:H=0:GOSUB 3200 7100 TX$=""+CA$:V=8:H=HH-1+(VV*2):GOSUB 3200 7110 TX$=" ":V=12+VV:H=HH:GOSUB 3200 7150 JK=JK+1:DELAY=3: GOSUB 2000 7155 NEXT JJ:IF CA<>0 THENV=12+VV:H=HH-1:TX$=CA$:GOSUB 3200 7160 VV=VV+1:TX$=ER$:V=8:H=10:GOSUB 3200:CA=0:GOSUB 3100:V=24:TX$=ER$ 7165 GOSUB 3000: GOSUB 3200:NEXT II 7170 V=12+VV:H=HH-1:TX$="[192][192][192][192][192][192][192][192][192][192][192]" 7175 IF N1>=4 THEN TX$=TX$+"[192]" 7180 GOSUB 3200 :FOR V=16 TO 20 STEP 2:H=0:TX$=ER$:GOSUB 3200:NEXT V 7185 V=16:TX$="[206]OW ADD:":GOSUB 3200 :IF OP=1 THEN 7210 7190 IF OP=2 THEN S$=SE$(7):GOSUB 14000:GOTO 7240 7210 V=16:HH=36 :FOR JJ=LEN(SE$(7))-1 TO 1 STEP-2:H=HH:TX$=MID$(SE$(7),JJ,1) 7220 GOSUB 3200:DELAY=2:GOSUB 2000:HH=HH-2 7230 NEXT JJ 7240 RETURN 7500 POKE 53265,11 7510 REM POKE 53296,255 7520 RETURN 7600 REM POKE 53296,0 7610 POKE 53265,27 7620 RETURN 8000 RW=INT(RND(0)*6)+1 8010 FORJ=1TO2 8020 V=20:H=5 :TX$=CHR$(CO(J))+RW$(RW) 8030 GOSUB3200 8040 DELAY=.3:GOSUB2000 8050 TX$=CHR$(5)+ER$:GOSUB3200 8060 DELAY=.1:GOSUB2000 8070 NEXTJ :RETURN 9000 V=15:H=0 :TX$="[217]OUR ANSWER: " 9010 GOSUB3200 9020 MX=5:GOSUB 11000:AN=VAL(TE$) 9030 IFINT(AN)=INT(S(7))THEN9080 9040 MI=MI+1 9050 V=17:TX$="[212]HE CORRECT ANSWER IS "+S$(7)+"." :H=0 9060 GOSUB3200 9070 GOTO 9180 9080 RW=INT(RND(0)*6)+1 9090 FORJ=1TO5 9100 V=20:TX$=CHR$(CO(J))+RW$(RW) 9110 GOSUB3000:GOSUB3200 9120 DELAY=.7:GOSUB2000 9130 TX$=ER$ 9140 GOSUB3000:GOSUB3200 9150 DELAY=.3:GOSUB2000 9160 NEXTJ 9180 RETURN 10000 REM *** DO SPRITEY THINGS *** 10010 SA=704:IF BC>200 THEN SA=2816 10020 FOR I=SA TO SA+63 10030 READX:POKEI,X 10040 NEXT 10050 POKE2040,11:IF BC>200 THEN POKE 2040,44 10060 POKE53287,2:POKE53277,255:POKE53271,255 10070 POKE53248,30:POKE53249,58 10075 IF BC>200 THEN (null) 1,30,58 10080 RETURN 10090 DATA252,252,252,121,249,248,51,243,240 10100 DATA7,231,224,15,207,192,7,159,128 10110 DATA3,63,0,0,126,0,0,252,0 10120 DATA0,120,0,0,48,0,0,0,0 10130 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 11000 TE$="":PRINT"[164]"; 11010 GET A$:IF A$="" THEN 11010 11020 IF A$=CHR$(13) THEN PRINTCHR$(20):RETURN 11030 IF A$=CHR$(20) AND TE$="" THEN 11010 11040 IF A$=CHR$(20) THEN TE$=LEFT$(TE$,LEN(TE$)-1):PRINTA$A$"[164]";:GOTO 11010 11045 IF A$="[140]" THEN GOSUB 7500:GOTO 180 11050 IF A$<" " OR A$>"[218]" THEN 11010 11060 IF A$>"Z" AND A$<"[193]" THEN 11010 11070 IF LEN(TE$)=MX THEN 11010 11080 PRINTCHR$(20)A$"[164]"; 11090 TE$=TE$+A$:GOTO 11010 14000 REM *** EXAMPLES WITH HELP *** 14010 V1=16:H1=36:S$=SE$(7) 14020 FORJ=LEN(S$)-1 TO1STEP-2 14030 V=V1+1:H=H1:TX$="^":GOSUB 3200 14050 Y=0:LO=0:HI=9 14060 GOSUB2100 14070 IFA$=MID$(S$,J,1)THEN14150 14080 Y=Y+1:IFY<3THEN14060 14090 V=23:TX$="[197]NTER A "+MID$(S$,J,1)+" PLEASE.[146]" 14100 GOSUB3000:GOSUB3200 14110 TX$=" " 14120 DELAY=1.5:GOSUB2000 14130 GOSUB3200:GOTO14060 14140 : 14150 V=V1:H=H1:TX$=MID$(S$,J,1) 14160 GOSUB3200:V=V1+1:TX$=" ":GOSUB 3200:H1=H1-2 14190 NEXTJ 14210 RETURN 15000 REM *** EXAMPLES WITH HELP *** 15010 V1=V:H1=H:T1$=TX$ 15015 S$=TX$ 15020 FORJ=1TOLEN(S$)-1STEP2 15050 Y=0:LO=0:HI=9 15060 GOSUB2100 15070 IFA$=MID$(S$,J,1)THEN15150 15080 Y=Y+1:IFY<3THEN15060 15090 V=23:TX$="[197]NTER A "+MID$(S$,J,1)+" PLEASE.[146]" 15100 GOSUB3000:GOSUB3200 15110 TX$=" " 15120 DELAY=1.5:GOSUB2000 15130 GOSUB3200:GOTO15060 15140 : 15150 V=V1:H=H1+J-1:TX$=MID$(S$,J,1) 15160 GOSUB3200 15190 NEXTJ 15200 V=V1:H=H1:TX$=T1$ 15210 RETURN 19000 REM *** MATH ROUTINE *** 19001 V=23:TX$="[208]LEASE [215]AIT...":GOSUB3000:GOSUB3200 19005 MD=1 19010 N(1)=N1:N(2)=N2:MD$="QUOTIENT" 19011 IF MD=1 THEN N(1)=N1-1:MD$="PRODUCT" 19020 FORQ=1TO8:S(Q)=0:SE$(Q)="":NEXTQ 19030 FORQ=1TO2 19040 FORR=N(Q)TO1STEP-1 19050 DI=INT(RND(1)*9)+1 19060 S(Q)=S(Q)+DI*(10^(R-1)) 19070 NEXT 19110 NEXT 19150 S(7)=INT(S(1)/S(2)) 19151 IF MD=1 THEN S(7)=S(1)*S(2) 19160 FORQ=1TO7 19170 S$(Q)=STR$(S(Q)):SE$(Q)="" 19180 FORR=2TOLEN(S$(Q)) 19190 SE$(Q)=SE$(Q)+MID$(S$(Q),R,1)+" " 19200 NEXT 19210 NEXT 19215 REM: IF MD=1 THEN RETURN 19220 FORQ=1TOLEN(S$(1)) 19230 D(Q)=VAL(MID$(S$(1),Q+1,1)) 19240 NEXT 19245 IF MD=1 THEN RETURN 19300 S1(1)=D(1) 19310 FORQ=1TON1 19320 P=2*(Q-1) 19330 S1(2+P)=S(2)*INT(S1(1+P)/S(2)) 19340 S1(3+P)=(S1(1+P)-S1(2+P))*10+D(Q+1) 19350 IFQ=N1THENS1(3+P)=S1(1+P)-S1(2+P) 19360 NEXT 19370 RETURN 20000 REM *** INFO INFO INFO *** 20001 GOSUB 7500:GOSUB3600:V=6 20002 READN 20003 FORI=1TON 20004 READTX$ 20005 IFTX$="PAGE"THEN GOSUB 3100:GOSUB 7500:GOSUB3600:V=6:GOTO20009 20006 H=2:IFMID$(TX$,10,1)="[163]"THENV=V+1:GOSUB3200:GOTO20009 20007 V=V+2:GOSUB3200 20009 NEXT 20010 GOSUB 7600:RETURN 20011 DATA42 20012 DATA"[212]HIS PROGRAM WILL HELP YOU LEARN" 20013 DATA"TO DO MULTIPLICATION PROBLEMS." 20015 DATA"[212]HERE ARE THREE WAYS TO USE THE" 20016 DATA"PROGRAM:"," 1) [211]EE EXAMPLES DONE" 20017 DATA" 2) [196]O PROBLEMS WITH HELP" 20018 DATA" 3) [196]O PROBLEMS YOURSELF" 20019 DATA"PAGE" 20020 DATA" 1) [211]EE EXAMPLES DONE" 20021 DATA" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 20022 DATA"[201]F YOU WANT TO SEE EXAMPLES DONE," 20023 DATA"[201] WILL SHOW YOU HOW TO DO THEM," 20024 DATA"EXPLAINING EACH STEP AS [201] GO." 20025 DATA"PAGE" 20026 DATA" 2) [196]O PROBLEMS WITH HELP" 20027 DATA" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 20028 DATA"[212]O DO PROBLEMS WITH HELP, [201] WILL" 20029 DATA"GIVE YOU A HINT FOR EACH STEP," 20030 DATA"AND HELP YOU IF YOU MAKE MISTAKES." 20031 DATA"PAGE" 20032 DATA" 3) [196]O PROBLEMS YOURSELF" 20033 DATA" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 20034 DATA"[212]HE THIRD OPTION IS TO WORK PROBLEMS" 20035 DATA"ON YOUR OWN. [198]OR THIS OPTION," 20036 DATA"YOU MAY NEED PENCIL AND PAPER." 20037 DATA"PAGE" 20038 DATA" [211]IZE OF [206]UMBERS" 20039 DATA" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 20040 DATA"[212]HE [214]ISION DISK GIVES A CHOICE OF THE" 20041 DATA"NUMBER OF DIGITS TO WORK WITH.","" 20042 DATA"[212]HIS SHORT PROGRAM WILL USE 4 DIGIT" 20043 DATA"NUMBERS WITH 2 DIGIT MULTIPLIERS." 20046 DATA"PAGE" 20047 DATA" [206]UMBER OF PROBLEMS" 20048 DATA" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 20049 DATA"[204]AST, YOU DECIDE HOW MANY PROBLEMS" 20050 DATA"TO DO. [201]F YOU LET THE COMPUTER DO" 20051 DATA"THE WORK, YOU MAY ONLY HAVE 5" 20052 DATA"PROBLEMS; OTHERWISE YOU MAY HAVE" 20053 DATA"FROM 2 TO 10 PROBLEMS." 20054 DATA"PAGE" 21000 GOSUB 7500:POKE 53269,1:PRINT"[147] " 21010 H=10:TX$="[214][201][211][201][207][206][160][211][207][198][212][215][193][210][197] AND":V=1:GOSUB 3200 21020 TX$="[213]P[212]IME [205]AGAZINE [208]RESENTS:":H=10:V=2:GOSUB 3200 21040 PRINT:PRINT:GOSUB 3500 21050 PRINT" 21200 [153][163]8)"SYS WAIT  WAIT  WAIT * LOGWAIT  WAIT * WAITRND  WAITRND  " 21210 [153][163]8)" WAITRND * WAIT  WAIT  WAIT  WAIT  WAITCOSLOG WAIT  WAITRND  " 21220 [153][163]8)"LOG WAIT  WAITCOS  WAIT LOG LOGWAIT  WAIT  WAIT  WAIT  WAITLOG WAITRND " 21230 [153][163]8)"  WAIT  WAIT  WAIT INTWAITGET WAIT  WAITRND* WAIT  WAIT LOG " 21240 [153][163]8)" LOG WAITCOS  WAIT LOG *WAIT  WAIT LOG WAITCOS  WAIT LOG " 21250 [153][163]5)"SYS WAIT  WAIT  WAITRND * WAIT  WAIT * LOGWAIT  " 21260 [153][163]5)"  WAIT  WAIT  WAITNEW WAIT  WAIT  WAIT  WAIT  " 21270 [153][163]5)"  WAIT  WAIT  WAITLOG WAITCOS WAIT  WAIT LOG LOGWAIT  WAIT  WAIT" 21280 [153][163]5)"  WAIT  WAIT  WAIT  WAIT  WAIT INTWAITGET  WAIT  " 21290 [153][163]5)"  WAIT  WAIT  WAIT  WAIT  WAIT LOG *WAIT  " 21295 [153][163]8)"DEF(null)RESS (null)VAL(null)(null)(null)(null)DEF TO LENONTINUE" 21300 [153]"PRINT# (null)UBLISHED BY (null)OFTDISK (null)UBLISHING, RIGHT$NC."; 21305 [151] BC,0:[141] 7600 21310 [161]A$:[139] A$[178][199](13) [167] [142] 21320 [139] A$[178]"RESTORE" [167] 230 21330 [137] 21310